package view;

import model.*;
import controller.*;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;
import com.sun.org.apache.bcel.internal.generic.RETURN;


import java.io.Serializable;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;



public class UnidadTransporteAction extends ActionSupport implements Serializable,ModelDriven<KlsUnidadTransporte>, Preparable{
	
	private static final long serialVersionUID = 1L;
	private KlsUnidadTransporte unidadTransporte = new KlsUnidadTransporte();
	private KlsUnidadTransporteManager unidadTransporteManager;
	private int idUnidadTransporte;
	private List<KlsUnidadTransporte> unidadTransporteList;
	private int idUsuarioCreador;
	private int idUsuarioModificador;
	private int idEstadoUnidadTransporte;
	private int idVehiculo;
	private KlsUnidadTransporteManager estadoUnidadTransporteManager;
	private KlsVehiculoManager vehiculoManager;
	private List<KlsVehiculo> vehiculoList;
	
	//CONSTRUCTORES
	public UnidadTransporteAction() {
    	unidadTransporteManager = new KlsUnidadTransporteManager();
    	estadoUnidadTransporteManager = new KlsUnidadTransporteManager();
    	vehiculoManager = new KlsVehiculoManager();
    }
	
	//MODELL DRIVEN
	public KlsUnidadTransporte getModel() {
		return unidadTransporte;
	}
	
	
	//PREPARE
	
	public void prepare() throws Exception {
		// TODO Auto-generated method stub
		this.setVehiculoList(vehiculoManager.list());	
	}
	
	public String execute() {
        System.out.println("execute called");
        return SUCCESS;
    }
	
	public String list() {
	     try {
	    	this.unidadTransporteList = unidadTransporteManager.list();
	        System.out.println("execute called");
	     }    
	     catch (Exception e) {
	        e.printStackTrace();
	        return ERROR;
	    }
	        return SUCCESS;
	}
	
	
	public String add() throws Exception {
		
	//leo varibles de sesion  
			
	setIdUsuarioCreador(Integer.valueOf(  ActionContext.getContext().getSession().get("loggedInIdUser").toString() ));
	setIdUsuarioModificador(Integer.valueOf(  ActionContext.getContext().getSession().get("loggedInIdUser").toString() ));
	setIdEstadoUnidadTransporte(1);
	
	System.out.println(getModel());
    unidadTransporteManager.add(getModel(), idUsuarioCreador, idUsuarioModificador, idEstadoUnidadTransporte , idVehiculo);
	return SUCCESS;		
	}
	
	public String load() {
		this.setVehiculoList(vehiculoManager.list());
	try {
    		HttpServletRequest request = ServletActionContext.getRequest();
    		String s = request.getParameter("idUnidadTransporte");
    		setIdUnidadTransporte( Integer.parseInt(s));
    		unidadTransporte = unidadTransporteManager.load(this.getIdUnidadTransporte());
    		
    	} catch (Exception e) {
            e.printStackTrace();
            return ERROR;
        }
    	return SUCCESS;
    }
	
	public String update() {
		
		HttpServletRequest request = ServletActionContext.getRequest();
		setIdEstadoUnidadTransporte( Integer.valueOf( request.getParameter("idEstadoUnidadTransporte")));
		setIdVehiculo( Integer.valueOf( request.getParameter("idVehiculo")));
		setIdUsuarioCreador( Integer.valueOf( request.getParameter("idUsuarioCreador")));
		setIdUsuarioModificador(Integer.valueOf(  ActionContext.getContext().getSession().get("loggedInIdUser").toString() ));
    	try {
    		unidadTransporte = unidadTransporteManager.update(unidadTransporte, idUsuarioCreador, idUsuarioModificador, idEstadoUnidadTransporte, idVehiculo);
        } catch (Exception e) {
            e.printStackTrace();
            return ERROR;
        }
        return SUCCESS;
    }
	
	
	public String delete() {
		try {	
			HttpServletRequest request = ServletActionContext.getRequest();
			String s = request.getParameter("idUnidadTransporte");
			setIdUnidadTransporte( Integer.parseInt(s));
			unidadTransporte = unidadTransporteManager.delete(this.getIdUnidadTransporte());   		
			
		} catch (Exception e) {
	        e.printStackTrace();
	        return ERROR;
		}
	        return SUCCESS;
		}
	
	
	
	//GETERS AN SETERS
	public KlsUnidadTransporte getUnidadTransporte() {
		return unidadTransporte;
	}

	public void setUnidadTransporte(KlsUnidadTransporte unidadTransporte) {
		this.unidadTransporte = unidadTransporte;
	}

	public KlsUnidadTransporteManager getUnidadTransporteManager() {
		return unidadTransporteManager;
	}

	public void setUnidadTransporteManager(
			KlsUnidadTransporteManager unidadTransporteManager) {
		this.unidadTransporteManager = unidadTransporteManager;
	}

	public int getIdUnidadTransporte() {
		return idUnidadTransporte;
	}

	public void setIdUnidadTransporte(int idUnidadTransporte) {
		this.idUnidadTransporte = idUnidadTransporte;
	}

	public List<KlsUnidadTransporte> getUnidadTransporteList() {
		return unidadTransporteList;
	}

	public void setUnidadTransporteList(
			List<KlsUnidadTransporte> unidadTransporteList) {
		this.unidadTransporteList = unidadTransporteList;
	}

	public int getIdUsuarioCreador() {
		return idUsuarioCreador;
	}

	public void setIdUsuarioCreador(int idUsuarioCreador) {
		this.idUsuarioCreador = idUsuarioCreador;
	}

	public int getIdUsuarioModificador() {
		return idUsuarioModificador;
	}

	public void setIdUsuarioModificador(int idUsuarioModificador) {
		this.idUsuarioModificador = idUsuarioModificador;
	}

	public int getIdEstadoUnidadTransporte() {
		return idEstadoUnidadTransporte;
	}

	public void setIdEstadoUnidadTransporte(int idEstadoUnidadTransporte) {
		this.idEstadoUnidadTransporte = idEstadoUnidadTransporte;
	}

	public KlsUnidadTransporteManager getEstadoUnidadTransporteManager() {
		return estadoUnidadTransporteManager;
	}

	public void setEstadoUnidadTransporteManager(
			KlsUnidadTransporteManager estadoUnidadTransporteManager) {
		this.estadoUnidadTransporteManager = estadoUnidadTransporteManager;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public KlsVehiculoManager getVehiculoManager() {
		return vehiculoManager;
	}

	public void setVehiculoManager(KlsVehiculoManager vehiculoManager) {
		this.vehiculoManager = vehiculoManager;
	}

	public List<KlsVehiculo> getVehiculoList() {
		return vehiculoList;
	}

	public void setVehiculoList(List<KlsVehiculo> vehiculoList) {
		this.vehiculoList = vehiculoList;
	}

	public int getIdVehiculo() {
		return idVehiculo;
	}

	public void setIdVehiculo(int idVehiculo) {
		this.idVehiculo = idVehiculo;
	}
	
	
}




